package org.atlantis.grosbeak.depot;

import java.util.Map;

/**
 * 增强Depot容器，可以对容器中的对象进行筛选。
 * 
 * @author <a href="mailto:seenoevil.cn@gmail.com">SeeNoEvil</a>
 * 
 */
public interface BoultDepot extends Depot {

	/**
	 * 获取经过筛选后的容器中的所有对象的ID数组。但是如果要使用此方法，那么必须 在json配置文件中直接声明类型。
	 * 
	 * @param boult
	 *            筛选器。
	 * @return 符合筛选条件的所有对象的ID数组。
	 */
	String[] ids(Class<? extends Boult> boultType);

	/**
	 * 获取筛选器在筛选过程中的回调方法产生的结果。
	 * 
	 * @param boultType
	 *            筛选器。
	 * @return
	 */
	Map<String, Object> callbacks(Class<? extends Boult> boultType);
}
